////
////  CCWebImage.m
////  CCKit
////
////  Created by tucici on 2019/12/5.
////  Copyright © 2019 tucici. All rights reserved.
////
//
//#import "CCWebImage.h"
///#import <TCC_Save/CCDB.h>
//#import "CCSave.h"
//@interface CCWebImage()
//@property (nonatomic, strong) NSCache *cache;
//@end
//@implementation CCWebImage
//NSString * const tableName = @"webImageDB";
//static CCDB *_ccdb;
//static CCWebImage *_webImage;
//static dispatch_once_t onceToken;
//+ (instancetype)webImage
//{
//    if (!_webImage)
//    {
//        dispatch_once(&onceToken,^{
//            _webImage = [[CCWebImage alloc]init];
//        });
//    }
//    
//    return _webImage;
//}
//
//+ (void)setDBName:(NSString *)name
//{
//    _ccdb = [CCDB db];
//    [_ccdb openDM:name];
//    [_ccdb createTable:tableName withOptions:@[@"imageName",@"url"]];
//}
//
//- (NSCache *)cache
//{
//    if (!_cache)
//    {
//        _cache = [[NSCache alloc] init];
//    }
//    return _cache;
//}
//
//+ (void)downloadImage:(NSURL *)url complete:(void (^)(UIImage *image, NSURL *url, NSError *error))block
//{
//    NSError *error;
//    if (!url)
//        NSAssert(url, @"url 是空的");
//    _webImage = [CCWebImage webImage];
//    
//    //1. 从内存里读取；如果内存有存储，则直接从内存中返回
//    UIImage *image = [_webImage.cache objectForKey:url.absoluteString];
//    if (image)
//    {
//        if (block)
//            block(image, url, error);
//        return;
//    }
//    
//    //2. 内存没有， 再从数据库中读取，如果数据库中有保存，则直接从数据库中返回文件地址
//    NSMutableArray *array_db = [[CCDB db] select:tableName withOptions:@[@"imageName"] conditionsDict:@{@"url":url.absoluteString}];
//    if (array_db.count > 0)
//    {
//        NSString *imageName = [[array_db objectAtIndex:0] objectForKey:@"imageName"];
//        NSString *filePath = [[CCSave getCachesPath] stringByAppendingFormat:@"/%@",imageName];
//        NSData *data = [NSData dataWithContentsOfFile:filePath];
//        image = [UIImage imageWithData:data];
//        if (image)
//        {
//            if (block)
//                block(image, url, error);
//            [_webImage.cache setObject:image forKey:url.absoluteString];//再次保存到内存中
//        }
//        return;
//    }
//
//    //3. 内存和数据库中都没有再从网络中下载
//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//        NSData *data = [NSData dataWithContentsOfURL:url];
//        dispatch_async(dispatch_get_main_queue(), ^{
//            UIImage *tmpImage = [UIImage imageWithData:data];
//            if (tmpImage)
//            {
//                
//                //先缓存到内存
//                [_webImage.cache setObject:tmpImage forKey:url.absoluteString];
//                
//                //再保存到本地，把本地地址记录到数据库中
//                NSArray *urlArr = [url.absoluteString componentsSeparatedByString:@"/"];
//                NSString *imageName = [urlArr lastObject];
//                [CCSave getCachesPath];
//                NSString *filePath = [[CCSave getCachesPath] stringByAppendingFormat:@"/%@",imageName];
//                [data writeToFile:filePath atomically:YES];
//                //把本地地址记录到数据库中
//                [[CCDB db] insert:tableName withDict:@{@"imageName":imageName,@"url":url.absoluteString}];
//                //再返回
//                if (block)
//                {
//                    block(tmpImage, url, error);
//                }
//            }
//        });
//    });
//}
//
//@end
